AWK একটি শক্তিশালী ভাষা যা টেক্সট প্রসেসিংয়ে বিশেষজ্ঞ। ফাইল বা ডেটা স্ট্রিমের প্রতিটি লাইনকে একটি রেকর্ড এবং প্রতিটি শব্দ বা টোকেনকে একটি ফিল্ড হিসেবে গণ্য করা হয়। AWK ব্যবহারকারীদের বিভিন্ন রেকর্ড এবং ফিল্ড পরিচালনা করতে দেয়, যা ডেটা বিশ্লেষণের সময় খুবই কার্যকর।
AWK প্রতিটি লাইনের ফিল্ডকে $
চিহ্ন ব্যবহার করে চিহ্নিত করে। উদাহরণস্বরূপ, $1
হল প্রথম ফিল্ড, $2
হল দ্বিতীয় ফিল্ড, ইত্যাদি। $0
পুরো লাইনের প্রতিনিধিত্ব করে।
awk '{print $1, $3}' filename.txt
এটি filename.txt
ফাইলের প্রতিটি লাইনের প্রথম এবং তৃতীয় ফিল্ড প্রিন্ট করবে।
AWK এ ডিফল্ট ফিল্ড বিভাজক (separator) হল স্পেস বা ট্যাব। তবে, ব্যবহারকারী চাইলে কাস্টম ফিল্ড বিভাজক নির্ধারণ করতে পারেন।
ফিল্ড বিভাজক নির্ধারণ করার জন্য -F
অপশন বা FS
ভেরিয়েবল ব্যবহার করা হয়।
awk -F "," '{print $1, $2}' filename.csv
এটি কমা (,
) ব্যবহার করে ফিল্ড বিভাজক নির্ধারণ করে এবং filename.csv
ফাইলের প্রথম ও দ্বিতীয় ফিল্ড প্রিন্ট করে।
awk 'BEGIN {FS="|"} {print $1, $3}' filename.txt
এখানে পাইপ (|
) ব্যবহার করে ফিল্ড বিভাজক নির্ধারণ করা হয়েছে।
AWK এ প্রতিটি লাইনকে একটি রেকর্ড হিসেবে গণ্য করা হয়। ডিফল্টভাবে, নতুন লাইন (newline) একটি রেকর্ডকে পৃথক করে। রেকর্ড বিভাজক RS
ভেরিয়েবলের মাধ্যমে পরিবর্তন করা যায়।
awk 'BEGIN {RS=" "} {print $1}' filename.txt
এই কমান্ডটি filename.txt
ফাইলের প্রতিটি শব্দকে আলাদা রেকর্ড হিসেবে গণ্য করে এবং প্রতিটি রেকর্ডের প্রথম ফিল্ড প্রিন্ট করে।
AWK এ কয়েকটি গুরুত্বপূর্ণ বিল্ট-ইন ভেরিয়েবল আছে যা ফিল্ড এবং রেকর্ড হ্যান্ডলিংয়ে সহায়তা করে:
awk '{print "Line:", NR, "has", NF, "fields."}' filename.txt
এই কমান্ডটি প্রতিটি লাইনের রেকর্ড নম্বর এবং ফিল্ডের সংখ্যা প্রিন্ট করবে।
Field এবং Record Handling ব্যবহার করে ব্যবহারকারীরা বিভিন্ন ধরনের ডেটা বিশ্লেষণ করতে পারেন, যেমন:
AWK এর Field এবং Record Handling ক্ষমতা ব্যবহারকারীদের ডেটা প্রক্রিয়াকরণ ও বিশ্লেষণে উচ্চ মাত্রার নিয়ন্ত্রণ প্রদান করে। ফিল্ড এবং রেকর্ড বিভাজক নির্ধারণের ক্ষমতা এটিকে বিভিন্ন ধরনের ডেটা ফরম্যাটের সাথে কাজ করার জন্য খুবই কার্যকর করে তোলে। AWK এর বিল্ট-ইন ভেরিয়েবলগুলো ব্যবহার করে ব্যবহারকারীরা ডেটা বিশ্লেষণ এবং রিপোর্টিং আরও কার্যকরভাবে করতে পারেন।
AWK সহ বিভিন্ন প্রোগ্রামিং ভাষায় টেক্সট ডেটা প্রক্রিয়াকরণের সময়, ফাইল বা ইনপুট ডেটা সাধারণত ফিল্ড (Field) এবং রেকর্ড (Record) আকারে বিভক্ত করা হয়। এই বিভাজন ডেটা প্রক্রিয়াকরণকে আরও কার্যকরী করে তোলে। AWK-তে একটি রেকর্ড সাধারণত একটি লাইন হিসেবে ধরা হয়, এবং একটি লাইনের মধ্যে ফিল্ডগুলি স্পেস বা নির্দিষ্ট delimiter দিয়ে আলাদা করা হয়।
\n
) দ্বারা পৃথক করা হয়।ধরা যাক, একটি data.txt
ফাইল আছে যার মধ্যে নিম্নলিখিত ডেটা রয়েছে:
Alice 25 Engineer
Bob 30 Designer
Charlie 28 Manager
এখানে, প্রতিটি লাইন একটি রেকর্ড এবং প্রতিটি লাইনের পৃথক উপাদানগুলি (Alice, 25, Engineer) হল ফিল্ড।
AWK-তে ফিল্ডগুলি $
চিহ্ন দিয়ে উপস্থাপন করা হয়। $1
, $2
, $3
ইত্যাদি ব্যবহার করে আপনি প্রথম, দ্বিতীয়, তৃতীয় ফিল্ড ইত্যাদি নির্দিষ্ট করতে পারেন। পুরো রেকর্ডটি $0
দিয়ে উপস্থাপন করা হয়।
awk '{ print $1 }' data.txt
এই কমান্ডটি data.txt
ফাইলের প্রতিটি লাইনের প্রথম ফিল্ড প্রিন্ট করবে। আউটপুট হবে:
Alice
Bob
Charlie
awk '{ print $1, $3 }' data.txt
এই কমান্ডটি প্রতিটি লাইনের প্রথম এবং তৃতীয় ফিল্ড প্রিন্ট করবে। আউটপুট হবে:
Alice Engineer
Bob Designer
Charlie Manager
AWK ডিফল্টভাবে প্রতিটি লাইনকে একটি রেকর্ড হিসেবে গণ্য করে। তবে, আপনি কাস্টম delimiter ব্যবহার করে রেকর্ড পরিবর্তন করতে পারেন।
ধরা যাক, একটি CSV ফাইল রয়েছে যার মধ্যে কোলন (:
) দ্বারা ফিল্ড বিভক্ত:
Alice:25:Engineer
Bob:30:Designer
Charlie:28:Manager
এই ফাইল প্রক্রিয়াকরণের জন্য AWK-তে -F
ফ্ল্যাগ ব্যবহার করে delimiter নির্ধারণ করতে হবে:
awk -F ':' '{ print $1, $3 }' data.csv
এই কমান্ডটি প্রথম এবং তৃতীয় ফিল্ড প্রিন্ট করবে। আউটপুট হবে:
Alice Engineer
Bob Designer
Charlie Manager
AWK-তে FS
(Field Separator) এবং RS
(Record Separator) পরিবর্তন করে ফিল্ড এবং রেকর্ডের প্রক্রিয়াকরণ নিয়ন্ত্রণ করা যায়।
awk 'BEGIN { FS=":" } { print $1, $2 }' data.csv
এই কমান্ডে FS
পরিবর্তন করে কোলন (:
) দিয়ে ফিল্ড আলাদা করা হয়েছে।
awk 'BEGIN { RS="\n\n" } { print $1 }' data.txt
এই কমান্ডে RS
পরিবর্তন করে দুটি newline দিয়ে রেকর্ড আলাদা করা হয়েছে।
AWK এবং অন্যান্য প্রোগ্রামিং ভাষায় Field এবং Record প্রক্রিয়াকরণ একটি অত্যন্ত কার্যকরী পদ্ধতি, যা ব্যবহারকারীদের ডেটা বিশ্লেষণ এবং ম্যানিপুলেশন করতে সহায়তা করে। AWK-তে $
চিহ্ন ব্যবহার করে নির্দিষ্ট ফিল্ড প্রক্রিয়াকরণ করা যায় এবং FS
এবং RS
এর মাধ্যমে ফিল্ড এবং রেকর্ড বিভাজন নিয়ন্ত্রণ করা সম্ভব। এই বৈশিষ্ট্যগুলি ডেটা প্রক্রিয়াকরণকে আরও শক্তিশালী এবং কার্যকর করে।
AWK তে Field Separator (FS)
এবং Record Separator (RS)
হল দুটি গুরুত্বপূর্ণ উপাদান যা ডেটা প্রক্রিয়াকরণের সময় ইনপুট ডেটাকে বিভিন্ন ফিল্ড এবং রেকর্ডে ভাগ করতে ব্যবহৃত হয়। FS
সাধারণত একটি লাইনের মধ্যে ফিল্ডগুলোকে আলাদা করার জন্য ব্যবহৃত হয় এবং RS
বিভিন্ন লাইন বা রেকর্ডকে আলাদা করতে ব্যবহৃত হয়।
FS
হল এমন একটি ভেরিয়েবল যা প্রতিটি লাইনের ফিল্ড বা কলামগুলোকে আলাদা করে। ডিফল্টভাবে, AWK তে FS
একটি স্পেস বা ট্যাব হয়, কিন্তু এটি কাস্টমাইজ করা যেতে পারে।
কমান্ড লাইনে -F
ফ্ল্যাগ দিয়ে:
awk -F"," '{ print $1, $2 }' data.csv
এখানে -F","
নির্দেশ করছে যে কমা (,
) হল ফিল্ড সেপারেটর। ফলে data.csv
ফাইলের প্রতিটি লাইনকে কমা দিয়ে ভাগ করা হবে।
প্রোগ্রামের মধ্যে FS
পরিবর্তন:
awk 'BEGIN { FS = ":" }
{
print "First Field:", $1
print "Second Field:", $2
}' data.txt
এখানে FS
কলনের (:
) মাধ্যমে প্রতিটি লাইনের ফিল্ডগুলোকে আলাদা করছে।
RS
হল একটি ভেরিয়েবল যা বিভিন্ন রেকর্ড বা লাইনকে আলাদা করে। ডিফল্টভাবে, RS
একটি নিউলাইন (অর্থাৎ প্রতিটি লাইন একটি রেকর্ড), তবে এটি কাস্টমাইজ করা যেতে পারে।
প্রোগ্রামের মধ্যে RS
পরিবর্তন:
awk 'BEGIN { RS = "" }
{
print "Record:", $0
}' paragraph.txt
এখানে RS
একটি খালি স্ট্রিং দিয়ে সেট করা হয়েছে, যা প্রতিটি প্যারাগ্রাফকে একটি রেকর্ড হিসেবে গণ্য করবে। এতে দুই লাইনের মধ্যে একটি ফাঁকা লাইন থাকলে সেটি রেকর্ড আলাদা করার সংকেত হিসেবে কাজ করবে।
কাস্টম রেকর্ড সেপারেটর ব্যবহার:
awk 'BEGIN { RS = "END" }
{
print "Record:", $0
}' document.txt
এখানে RS
কে "END" শব্দ দিয়ে সেট করা হয়েছে। ফলে, document.txt
ফাইলের প্রতিটি রেকর্ড "END" শব্দটি দেখা পর্যন্ত গঠিত হবে।
নিচে একটি উদাহরণ দেওয়া হলো যেখানে FS
এবং RS
একসাথে ব্যবহার করা হয়েছে:
awk 'BEGIN { FS = ", "; RS = "\n\n" }
{
print "Record Start:"
print "First Field:", $1
print "Second Field:", $2
print "--------------------"
}' data.txt
এখানে, প্রতিটি রেকর্ড দুইটি নিউলাইনের মাধ্যমে আলাদা করা হয়েছে এবং প্রতিটি ফিল্ড কমা এবং স্পেস (,
) দিয়ে আলাদা করা হয়েছে।
FS
এবং RS
AWK তে ডেটা প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ উপাদান। FS
ব্যবহারকারীদের ফিল্ড বা কলামগুলিকে সঠিকভাবে আলাদা করতে সাহায্য করে এবং RS
বিভিন্ন রেকর্ড বা লাইন আলাদা করতে ব্যবহৃত হয়। এই ভেরিয়েবলগুলি কাস্টমাইজ করে ব্যবহারকারীরা তাদের ডেটা ফাইলের কাঠামো অনুসারে ডেটা প্রক্রিয়াকরণ করতে পারেন, যা ডেটা বিশ্লেষণকে আরও কার্যকর এবং ফলপ্রসূ করে।
AWK সাধারণত ফিল্ডগুলো আলাদা করতে স্পেস বা ট্যাব ব্যবহার করে, তবে প্রয়োজন অনুসারে একাধিক Delimiter ব্যবহার করা যায়। এটি ডেটা প্রসেসিংকে আরও সহজ এবং কার্যকর করে যখন আপনার ডেটা ফাইলটি একাধিক ধরনের Delimiter দ্বারা আলাদা থাকে। নিচে AWK এ Multiple Delimiters ব্যবহার করার বিভিন্ন পদ্ধতি এবং উদাহরণ দেওয়া হলো।
AWK এ -F
অপশন ব্যবহার করে Delimiter সেট করা যায়। একাধিক Delimiter ব্যবহার করার জন্য Regular Expression ব্যবহার করা হয়। Regular Expression এর মাধ্যমে বিভিন্ন Delimiter চিহ্নিত করা হয়।
,
), সেমিকোলন (;
), এবং স্পেস একসাথে Delimiter হিসেবে ব্যবহারawk -F '[,; ]' '{print $1, $2, $3}' filename.txt
এখানে, -F '[,; ]'
ব্যবহার করে কমা, সেমিকোলন এবং স্পেস Delimiter হিসেবে ব্যবহার করা হয়েছে। ফাইলের প্রথম তিনটি ফিল্ড প্রিন্ট হবে।
আপনি যখন একাধিক Delimiter দিয়ে আলাদা করা ডেটা ফাইল প্রসেস করেন, তখন AWK প্রতিটি Delimiter দিয়ে ইনপুট লাইনটি বিভক্ত করে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটা ফাইলটি কমা এবং পাইপ (|
) দিয়ে আলাদা করা হয়েছে।
awk -F '[,|]' '{print $1, $4}' filename.txt
এখানে, কমা এবং পাইপ Delimiter হিসেবে ব্যবহার করা হয়েছে এবং প্রথম ও চতুর্থ ফিল্ড প্রিন্ট হবে।
AWK এর BEGIN
ব্লক ব্যবহার করে FS
ভেরিয়েবল নির্ধারণ করেও Multiple Delimiters ব্যবহার করা যায়।
awk 'BEGIN {FS="[|: ]"} {print $2, $3}' filename.txt
এখানে FS="[|: ]"
ব্যবহার করে পাইপ, কোলন, এবং স্পেস Delimiter হিসেবে নির্ধারণ করা হয়েছে। দ্বিতীয় এবং তৃতীয় ফিল্ড প্রিন্ট হবে।
AWK এ Multiple Delimiters ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করতে পারেন।
awk -F '[-,]' '$2 > 100 {print $1, $2}' filename.txt
এখানে, -
এবং ,
Delimiter হিসেবে ব্যবহার করা হয়েছে। দ্বিতীয় ফিল্ডের মান যদি 100 এর বেশি হয়, তবে প্রথম এবং দ্বিতীয় ফিল্ড প্রিন্ট হবে।
AWK এর gsub()
ফাংশন ব্যবহার করে নির্দিষ্ট Delimiter পরিবর্তন করা সম্ভব।
awk '{gsub(/[;,]/, "|"); print $0}' filename.txt
এখানে, কমা এবং সেমিকোলন Delimiterগুলিকে পাইপ দ্বারা প্রতিস্থাপন করা হয়েছে এবং প্রতিটি লাইন প্রিন্ট করা হয়েছে।
AWK এ Multiple Delimiters ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা অত্যন্ত সহজ এবং কার্যকর। একাধিক Delimiter ব্যবহার করতে Regular Expression ব্যবহার করা হয়, যা বিভিন্ন ধরনের Delimiter সহজে সনাক্ত এবং ব্যবহার করতে সক্ষম করে। এটি বিশেষত সেই ক্ষেত্রে কার্যকর যখন ডেটা ফাইলটি একাধিক Delimiter দিয়ে বিভক্ত থাকে এবং ডেটা বিশ্লেষণ সহজে সম্পাদন করতে হয়।
AWK সাধারণত ফিল্ডগুলো আলাদা করতে স্পেস বা ট্যাব ব্যবহার করে, তবে প্রয়োজন অনুসারে একাধিক Delimiter ব্যবহার করা যায়। এটি ডেটা প্রসেসিংকে আরও সহজ এবং কার্যকর করে যখন আপনার ডেটা ফাইলটি একাধিক ধরনের Delimiter দ্বারা আলাদা থাকে। নিচে AWK এ Multiple Delimiters ব্যবহার করার বিভিন্ন পদ্ধতি এবং উদাহরণ দেওয়া হলো।
AWK এ -F
অপশন ব্যবহার করে Delimiter সেট করা যায়। একাধিক Delimiter ব্যবহার করার জন্য Regular Expression ব্যবহার করা হয়। Regular Expression এর মাধ্যমে বিভিন্ন Delimiter চিহ্নিত করা হয়।
,
), সেমিকোলন (;
), এবং স্পেস একসাথে Delimiter হিসেবে ব্যবহারawk -F '[,; ]' '{print $1, $2, $3}' filename.txt
এখানে, -F '[,; ]'
ব্যবহার করে কমা, সেমিকোলন এবং স্পেস Delimiter হিসেবে ব্যবহার করা হয়েছে। ফাইলের প্রথম তিনটি ফিল্ড প্রিন্ট হবে।
আপনি যখন একাধিক Delimiter দিয়ে আলাদা করা ডেটা ফাইল প্রসেস করেন, তখন AWK প্রতিটি Delimiter দিয়ে ইনপুট লাইনটি বিভক্ত করে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটা ফাইলটি কমা এবং পাইপ (|
) দিয়ে আলাদা করা হয়েছে।
awk -F '[,|]' '{print $1, $4}' filename.txt
এখানে, কমা এবং পাইপ Delimiter হিসেবে ব্যবহার করা হয়েছে এবং প্রথম ও চতুর্থ ফিল্ড প্রিন্ট হবে।
AWK এর BEGIN
ব্লক ব্যবহার করে FS
ভেরিয়েবল নির্ধারণ করেও Multiple Delimiters ব্যবহার করা যায়।
awk 'BEGIN {FS="[|: ]"} {print $2, $3}' filename.txt
এখানে FS="[|: ]"
ব্যবহার করে পাইপ, কোলন, এবং স্পেস Delimiter হিসেবে নির্ধারণ করা হয়েছে। দ্বিতীয় এবং তৃতীয় ফিল্ড প্রিন্ট হবে।
AWK এ Multiple Delimiters ব্যবহার করে নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করতে পারেন।
awk -F '[-,]' '$2 > 100 {print $1, $2}' filename.txt
এখানে, -
এবং ,
Delimiter হিসেবে ব্যবহার করা হয়েছে। দ্বিতীয় ফিল্ডের মান যদি 100 এর বেশি হয়, তবে প্রথম এবং দ্বিতীয় ফিল্ড প্রিন্ট হবে।
AWK এর gsub()
ফাংশন ব্যবহার করে নির্দিষ্ট Delimiter পরিবর্তন করা সম্ভব।
awk '{gsub(/[;,]/, "|"); print $0}' filename.txt
এখানে, কমা এবং সেমিকোলন Delimiterগুলিকে পাইপ দ্বারা প্রতিস্থাপন করা হয়েছে এবং প্রতিটি লাইন প্রিন্ট করা হয়েছে।
AWK এ Multiple Delimiters ব্যবহার করে ডেটা প্রক্রিয়াকরণ করা অত্যন্ত সহজ এবং কার্যকর। একাধিক Delimiter ব্যবহার করতে Regular Expression ব্যবহার করা হয়, যা বিভিন্ন ধরনের Delimiter সহজে সনাক্ত এবং ব্যবহার করতে সক্ষম করে। এটি বিশেষত সেই ক্ষেত্রে কার্যকর যখন ডেটা ফাইলটি একাধিক Delimiter দিয়ে বিভক্ত থাকে এবং ডেটা বিশ্লেষণ সহজে সম্পাদন করতে হয়।
common.read_more